Soru & Cevap

String'i ListView'e Dönüştürmek

30.07.2014 - 11:19

Merhaba,
 

Elimde uzun bir String yazı var. Bu yazıyı bir String diziye dönüştürerek satır satır bir ListView'in öğeleri haline getirmek istiyorum.

Ekteki resimdeki gibi bir sonucu nasıl alabilirim ?

27 Görüntülenme

6 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user burhanaksendir
burhanaksendir
03.08.2014 - 02:34

İstediğim sonucu ne yazık ki alamadım. 

picture-9626-1398797004.jpg
bakiabaci
31.07.2014 - 01:41

Gerçekten ilginç bir soru olmuş. Play Store'da desteklenen 5 bin e yakın cihaz var ve standartları yakalamak çok önemli. Konu takibimde..

Burhan Aksendir
31.07.2014 - 02:04
Belki de çok kolay bir yolu vardır ama ben yanlış yöntemleri deniyorumdur; bu yüzden de ilginç hale geldi sanırım :)
picture-3606-1408610132.jpg
cgural
31.07.2014 - 01:17

Şuradaki kullanıcı TextView üzerinden giderek içine kaç karakter sığacağını hesaplamış: http://stackoverflow.com/questions/10431945/how-to-get-n-text-that-can-be-fit-on-screen-textview-with-a-specific-size

Siz de ListView'da row_layout olarak kullandığınız TextView üzerinde benzer işlemi deneyebilirsiniz.

Yine de ListView'ın kullanıcıya bir liste göstermek için olduğunu göz önünde bulundurup, mısraları liste öğesi olarak gösterme fikrinizi tekrar bir düşünün derim. Neticede şiirler liste değil. Kullanıcının bunu liste olarak algılaması ona itici gelebilir.

Burhan Aksendir
31.07.2014 - 02:02
Teşekkür ederim. Kullanıcıya şiirleri liste görünümünde algılamaması için özel bir tasarım sağlayacağım. Şiiri bir liste halinde satır satır olarak göstermek istememin nedenlerinden en önemlisi, çok uzun şiirlerde kullanıcının kaldığı yeri ilgili row'a dokunup kolayca işaretlemesi için. Belki TextView içerisinde daha kolay olur ? Bilemiyorum ama verdiğiniz örnek üzerinden deneyeceğim birazdan.
picture-1372-1408467635.jpg
ahmtbrk
31.07.2014 - 11:09

bu konuda %100 ideali bulabileceğini sanmıyorum.şunu önereceğim sana bi kaç farklı ekran boyutunda belirlediğin font size'de kaç karakter sığıyor şöyle bir not et.daha sonra screen width ini alabilirsin androidde.

[code]


int Measuredwidth = 0;

int Measuredheight = 0;

Point size = new Point();

WindowManager w = getWindowManager();

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

w.getDefaultDisplay().getSize(size);

Measuredwidth = size.x; Measuredheight = size.y;

}else{

Display d = w.getDefaultDisplay();

Measuredwidth = d.getWidth();

Measuredheight = d.getHeight();

}

[/code]

sonrasında şöyle yaparsın onCreatede size'yi alırsın size şu ise şu kadar karakter bu ise bu kadar karakter tarzı sınır verebilirsin.

Burhan Aksendir
31.07.2014 - 01:53
Teşekkür ederim. Haklısınız aslında. Dünden beri çok uğraşıyorum. Ekranın uzunluğunu aldıktan sonra bütün zorluklar başlıyor. Çünkü bu uzunluğa kaç karakter sığar koşulu gerçekten birçok size ve farklı model olduğu için yönetimi zor olacak gibi ?
Ahmet Burak Demirkoparan
31.07.2014 - 02:00
Grup grup yaparsin ortalama bi sekilde 3 inc ise x karakter 3.5 inc ise x+10 karakter ... ... 5 inc ise x+30 karakter gibi Fakat dedigim gibi ideali yakalamasi cok zor
Burhan Aksendir
31.07.2014 - 02:05
Aslında doğru diyorsunuz. Bunu bir deneyeceğim. Teşekkür ederim.
Profile picture for user burhanaksendir
burhanaksendir
30.07.2014 - 11:50

Aşağıdaki fonksiyon ile istediğim bir limite göre stringimi parçalayabiliyorum:

[code]

public String addLinebreaks(String input, int maxLineLength) {
StringTokenizer tok = new StringTokenizer(input, " ");
StringBuilder output = new StringBuilder(input.length());
int lineLen = 0;

while (tok.hasMoreTokens()) {
  String word = tok.nextToken();
  if (lineLen + word.length() > maxLineLength) {
  output.append("\n");
  lineLen = 0;
 }
output.append(word);
lineLen += word.length();
}
return output.toString();
}

[/code]

Ancak benim istediğim, sizin de dediğiniz gibi  cihazın ekran uzunluğuna sığdırabileceğim karakter sayısını bulabilmek... Çıkamıyorum işin içinden 

Burhan Aksendir
31.07.2014 - 01:55
Cihazın ekran uzunluğuna sığacak maksimum karakter sayısını bulabilmek için yardımlarınızı bekliyorum.
picture-1372-1408467635.jpg
ahmtbrk
30.07.2014 - 11:23
split methodu ile , veya baska bir simgeye göre bölebilirsin stringi ve arraylist e yükleyebilirsin.daha sonra sadece adaptere set etmek kaliyor collectionu
Burhan Aksendir
30.07.2014 - 11:28
Cevap için teşekkür ederim. Split ile böldüm ama bir satırın uzunluğunu ( ekteki resimdeki gibi) cihazın width özelliğine göre nasıl limit ayarı verebiliyorum peki ? Mesela cihazın 320 x 480 boyutları var diyelim. Portrait modundayken 320 px'e sığacak kadar uzunluktaki bir satırı nasıl oluşturabilirim ? Bunun bir ayarı, örneği var mı?
Ahmet Burak Demirkoparan
30.07.2014 - 11:42
Ekrana sigdirabildigin karakter sayisini belirleyebilirsen mesela 10 ar 10 ar artan bir döngü kurup global bi degiskende n.degeri tutup n+1 de de o anki dongu degerini tutar ve string substr e parametre verirsin. deger.substring(n,n+1)
Burhan Aksendir
30.07.2014 - 11:48
Anladım. İstediğim bir limite göre (mesela 80 karakter gibi) stringi parçalayabiliyorum ancak ekrana sığdırabileceğim karakter sayısını (limit olarak atayabilmem için) bir türlü belirleyemiyorum. Aşağıdaki kodu kullandım limite göre bölmek için.
Baki Mustafa
31.07.2014 - 12:07
Satırın max Length uzunluğu belirlenip ufak bir döngü ile son bir kaç harfi kontrol ederek alt satıra geçerken kesme işareti attırarak alt satıra geçme işlemi uygulanması daha stabil olur.
Burhan Aksendir
31.07.2014 - 12:11
Cevap için teşekkür ederim. Cihazın ekran uzunluğuna sığacak satırın karakter satırını belirleyecek mantığı, formulü bulamıyorum.